Discovery and configuration of device configurations

ABSTRACT

A computer program product is provided for performing a method comprising: receiving, by the host processor, physical configuration information including identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths associated with each physical endpoint; sending at least one message to each physical endpoint on each of the plurality of communication paths in response to receiving the physical configuration information, the at least one message requesting identification of a logical entity at the endpoint, and receiving logical configuration information identifying the logical entity; and generating a data collection accessible by the host processor, the data collection including the physical configuration information and the logical configuration information for each logical entity, and identification of a location of each physical endpoint connected to the host processor and a plurality of communication paths to each logical entity.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 12/822,835, filed Jun. 24, 2010, entitled “Discovery andConfiguration of Device Configurations,” which is hereby incorporatedherein by reference in its entirety.

BACKGROUND

The present invention relates to computer memory and, more specifically,to discovery of the configuration of devices located at endpoints ofstorage area networks and endpoints directly attached to controllers.

Managing the configuration of devices and control units in a clusteredenvironment is a daunting task and is typically performed by highlyskilled personnel with vast experience. Whenever changes to theenvironment are required, care must be taken to ensure that new devicesand control units are connected and configured properly. Even theskilled and experienced personnel can easily make mistakes due to thecomplexity of the environment. These mistakes include selecting pathsthat may not reach the proper device, selecting paths in such a way thatcould lead to loss of connectivity if one common component of the set ofpaths chosen fails, or selecting paths that over commit the availablebandwidth for the workload that will run on those paths across allstorage subsystems.

SUMMARY

An embodiment is a computer program product for processingcommunications between a host processor and a plurality of devicesconnected to the host processor by an input/output processing system,comprising a tangible storage medium readable by a processing circuitand storing instructions for execution by the processing circuit forperforming a method comprising: receiving, by the host processor,physical configuration information including identification of alocation of each physical endpoint connected to the host processor and aplurality of communication paths associated with each physical endpoint;sending at least one message to each physical endpoint on each of theplurality of communication paths in response to receiving the physicalconfiguration information, the second message requesting identificationof a logical entity at the endpoint, and receiving logical configurationinformation identifying the logical entity; and generating a datacollection accessible by the host processor, the data collectionincluding the physical configuration information and the logicalconfiguration information for each logical entity, and identification ofa location of each physical endpoint connected to the host processor anda plurality of communication paths to each logical entity.

Another embodiment is a method of processing communications between ahost computer and a plurality of devices connected to the host computerby an input/output processing system, the method comprising: receiving,by the host processor, physical configuration information includingidentification of a location and a plurality of communication pathsassociated with each physical endpoint; sending at least one message toeach physical endpoint on each of the plurality of communication pathsin response to receiving the physical configuration information, the atleast one message requesting identification of a logical entity at theendpoint, and receiving logical configuration information identifyingthe logical entity; and generating a data collection accessible by thehost processor, the data collection including the physical configurationinformation and the logical configuration information for each logicalentity, and identification of the plurality of communication paths toeach logical entity.

A further embodiment includes a computer program product for processingcommunications between a host processor and a plurality of devicesconnected to the host processor by a network, comprising a tangiblestorage medium readable by a processing circuit and storing instructionsfor execution by the processing circuit for performing a methodcomprising: generating an exploration device by configuring at least oneof hardware and software in the host processor, the exploration deviceconfigured to be used to communicate with one of a plurality of physicalendpoints in the network; responsive to a connection between the hostprocessor and the plurality of devices being a network connection,sending a first Fibre Channel message from a channel subsystem in thehost computer to a network processor requesting a configuration of theplurality of physical endpoints; receiving physical configurationinformation from the network processor in response to the first message,the physical configuration information including identification of alocation and a plurality of channel paths associated with each I/Odevice; sending a second Fibre Channel message to one or more I/Odevices on each of the plurality of channel paths in response toreceiving the physical configuration information, the second FibreChannel message requesting identification of a logical image connectedto the plurality of channel paths, and receiving logical imageinformation identifying the logical control unit; and generating a datacollection accessible by the host computer, the data collectionincluding the physical configuration information and the logicalinformation for each channel path, and identification of the pluralityof channel paths to each logical control unit.

Additional features and advantages are realized through the techniquesof the present invention. Other embodiments and aspects of the inventionare described in detail herein and are considered a part of the claimedinvention. For a better understanding of the invention with advantagesand features, refer to the description and to the drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The forgoing and other features, and advantages ofthe invention are apparent from the following detailed description takenin conjunction with the accompanying drawings in which:

FIG. 1 depicts an exemplary embodiment of a computer network and/orcluster;

FIG. 2 depicts an exemplary embodiment of a host computer systemincluding an input/output processing system;

FIG. 3 is a flow diagram depicting an exemplary embodiment of a methodof exploring and discovering devices in a network and/or generating anetwork device entity configuration; and

FIG. 4 is a flow diagram depicting an exemplary embodiment of a methodof updating a network configuration and/or managing communications in acomputer network.

DETAILED DESCRIPTION

The systems and methods described herein include an automatic processfor making incremental updates to a running operating system or clusterof operating systems. These incremental updates are for the dynamicdiscovery of physical and logical I/O device entities, such as newlyconnected or changed storage subsystems, control units and I/O devicesconnected to one or more host computers in a cluster, and connected tothe devices via point-to-point and/or network fabric connections. Theseresources that are dynamically discovered are placed into an I/Oconfiguration definition having optimal high availabilitycharacteristics (to allow single points of failure to be avoided) andallowing for a client based policy for controlling performance goals(e.g. number of managed channels). The I/O resources are discovered andassigned using messages such as existing, well-known I/O commands andnew I/O commands (e.g. Test Initialization Capability (TINC) commands).The fabric is explored through each attached channel or othercommunication path on each node in the cluster to determine all of thedevice entities, such as physical or logical control units and I/Odevices, to which a logical path can be established. Each device entityis discovered by interrogating and exploring the network nodes todiscover all physical endpoints, such as destination ports, followed byutilizing commands configured to interrogate each endpoint via eachavailable channel or path to receive configuration data for each logicaldevice entity. In one embodiment, the hardware and/or software of thehost computer is dynamically configured to generate an explorationdevice used to deliver interrogation I/O messages to each endpoint andgenerate configuration data for logical control units (control unitimages) and other logical device entities. The configuration data may beused to update existing device configurations and/or may be used tomanage I/O operations by selecting paths based on availability andperformance considerations.

FIG. 1 illustrates an exemplary embodiment of a computing, processingand/or data management system 100 such as a storage area network orfabric. The system 100 includes one or more host processors 102connected to a plurality of device entities represented as nodes 104.The host processor 102 may be any computer or processing and/or storagedevice, such as a server, storage unit, data center and devicemanagement unit. The host processor 102 may be a large scale computingsystem, such as a mainframe or server. The nodes 104 may be connected incommunication with the host processors 102 via suitable connectors 106such as wires, cables and optical fibers, as part of, for example, aFibre Channel (FC) or Internet Protocol (IP) network. Each node 104 mayinclude one or more I/O devices such as disk controllers, tapecontrollers, card readers and punches, magnetic tape units, directaccess storage devices, displays, keyboards, printers, pointing devices,teleprocessing devices, communication controllers and sensor basedequipment, to name a few.

Each host processor 102 includes an I/O processing system 108 configuredto facilitate communication between the host processors 102 and thenodes 104. In one embodiment, the system 100 includes one or morenetwork processors such as name servers, network switches and/or FibreChannel switches 110. Each switch 110 is coupled to an I/O processingsystem 108 and one or more nodes 104 and provides the capability ofphysically interconnecting any two links that are attached to the switch110. The network processor may include a database or other structurestoring network configuration information for each physical endpoint ofthe network, such as identifiers, fabric addresses and zoningprocedures.

In one embodiment, the host processor(s) 102 are configured as a systemcomplex or “sysplex” that includes multiple processors such as serversor mainframes connected as a single logical system. In one example, thehost processor 102 is a parallel or other sysplex that act as a singlesystem image with an operating system. The sysplex may include dedicatedhardware and/or virtual images executing under the control of ahypervisor or a PR/SM (Processor Resource/System Manager). For example,one or more of the host processors 102 include operating systems 124that may be partitioned into one or more images or logical partitions(LPARs), and multiple physical and/or logical (e.g., LPARs) hostcomputers may be connected in the cluster or sysplex.

FIG. 2 illustrates an example of an I/O processing system 108 includedin a host processor 102. In this embodiment, the I/O processing system108 includes a channel subsystem 112, and each node 104 includes an I/Odevice 114, one or more optional physical control units 115, and caninclude one or more logical entities 117 such as logical control units116 which may be associated with one or more logical devices or deviceimages 119. The logical entities 115 may be any non-physical deviceincorporated in or associated with the device 114, destination port ornode 104, including any storage or memory area, logical volume, orimage.

The host processor 102 includes, for example, a main memory 118, one ormore processors such as central processing units (CPUs) 120, a storagecontrol element 122, and the channel subsystem 112. The I/O processingsystem 108 is connected via the network with one or more storagesubsystems such as control units 116 associated with one or more controlunit images 116 and logical I/O devices 114. The control units andcontrol unit images may be connected to the I/O processing system 108via direct, point-to-point connections or fabric connections. Thecontrol units may be configured as physical control units 115 connectedto or otherwise incorporated into the devices 114. The control units mayalso be logical control units 116 or virtual images associated with oneor more devices 114 and/or logical devices 119.

Main memory 118 stores data and programs, which can be input from I/Odevices 114. For example, the main memory 118 may include one or moreoperating systems (OSs) 124 (which may be configured as one or morelogical partitions (LPAR)) that are executed by one or more of the CPUs120. For example, one CPU 120 can execute a Linux™ operating system 124and a z/OS™ operating system 124 as different virtual machine instances.The main memory 118 is directly addressable and provides for high-speedprocessing of data by the CPUs 120 and the channel subsystem 112.

One or more of the above components of the network 100 are furtherdescribed in “IBM® z/Architecture Principles of Operation,” PublicationNo. SA22-7832-05, 6th Edition, April 2007; and U.S. Pat. No. 5,526,484entitled “Method And System For Pipelining The Processing Of ChannelCommand Words,” Casper et al., issued Jun. 11, 1996, each of which ishereby incorporated herein by reference in its entirety. IBM is aregistered trademark of International Business Machines Corporation,Armonk, N.Y., USA. Other names used herein may be registered trademarks,trademarks or product names of International Business MachinesCorporation or other companies.

CPU 120 (or one or more LPARs) is the controlling center of the I/Oprocessing system 108. It contains sequencing and processing facilitiesfor instruction execution, interruption action, timing functions,initial program loading, and other machine-related functions. Storagecontrol element 122 is coupled to the main memory 118, the CPUs 120 andthe channel subsystem 112, and controls, for example, queuing andexecution of requests made by the CPU 120 and channel subsystem 112.

The channel subsystem 112 provides a communication interface betweenhost system 102, switches 110 and endpoints such as physical and/orlogical control units. The channel subsystem 112 is coupled to thestorage control element 122, as described above, and to each of thecontrol units 116 via a connection 126, such as a serial link. Theconnection 126 may be implemented as an optical link, employingsingle-mode or multi-mode waveguides in a Fibre Channel fabric. Thechannel subsystem 112 directs the flow of information between I/Odevices 114 and main memory 118. It relieves the CPUs 120 of the task ofcommunicating directly with the I/O devices 114 and permits dataprocessing to proceed concurrently with I/O processing.

Each node 104, endpoint or device 114 may be associated with one or morelogical entities or virtual images such as one or more logical controlunits 116. Each logical control unit 116 provides logic to operate andcontrol one or more I/O devices 114 and adapts, through the use ofcommon facilities, the characteristics of each I/O device 114 to thelink interface provided by the channel 127. The common facilitiesprovide for the execution of I/O operations, indications concerning thestatus of the I/O device 114 and control unit 116, control of the timingof data transfers over the channel paths 127 and certain levels of I/Odevice 114 control.

In one embodiment, the logical control units 116 control the operationof one or more input/output devices 114. In another embodiment, thelogical control units 116 control access to logical devices 119 ormemory ranges in a storage device 114. The logical control units 116 maybe located within or outside of the physical device 114 or physicalcontrol unit.

The channel subsystem 112 uses one or more communication paths, such aschannel paths 127 (or I/O channels) as the communication links inmanaging the flow of information to or from the I/O devices 114 and/orthe control units 116. The channel paths 127 (i.e., channels) mayinclude any combination of communication devices (such as connections126 or connectors 106 and/or switches 110) that form a logical paththrough which data is transferred between network components, such asbetween the channel subsystem 112 and a node, device or logical controlunit 116). Channels 127 may be connected by optical fiber, wirelessand/or cable subsystem that connect components as well as switchingdevices. Subchannels 128 (hardware representations of the device 114)may be associated with each control unit 115, 116 and/or device 114 andserve to represent the device 114. For example, a control unit 115 isassociated with a set of up to 8 channels 127 and may have up to 256subchannels associated with logical control units 116.

As a part of the I/O processing, the channel subsystem 112 also performsthe path-management functions of testing for channel path availability,selecting an available channel path (channel 127 or subchannel 128)associated with an I/O device and initiating execution of the operationwith the I/O device 114 for the existing I/O configuration definition.

In one embodiment, one or more subchannels 128 are provided for eachendpoint or node 104 accessible to a program through the channelsubsystem 112. Each subchannel 128 may provide (via, for example, a datastructure, such as a table) the logical appearance of a device (or alogical control unit 116) to the host processor 102. Each subchannel 128provides information concerning the associated I/O device and itsattachment to the channel subsystem 108. The subchannel 128 alsoprovides information concerning the state of I/O operations and otherfunctions involving the associated I/O device 114. The subchannel is themeans by which channel subsystem 112 provides information aboutassociated I/O devices 114 to CPUs 120, which obtains this informationby executing I/O instructions received from, for example, the O/S 124.Each subchannel 128 is associated with a logical control unit 116 thatis associated with one or more paths or channels 127.

FIG. 3 illustrates a method 300 of discovering devices in a networkand/or generating a network device entity configuration. The method 300includes one or more stages 301-306. Although the method 300 isdescribed in conjunction with the host computer system or processor 102and the channel subsystem 112, the method 300 can be utilized inconjunction with any processing and/or storage devices capable of I/Ooperations with remote devices, as well as with any network device orsystem. The method can be performed by one or more host processors 102,such as one or more host processors 102 or other processing or controlentities in a cluster.

In the first stage 301, for a system or network 100 that includesmultiple host entities or processors 102, such as host processingsystems or computers in a cluster or sysplex, a target list of hostprocessors 102 within the cluster is selected. For example, one or morehost processors 102, LPARs, clusters or network segments are selected tobe used for exploration. The selection may include determining whichentities will be used, whether the entities 102 are capable ofexploration, and also what channels 127 will be explored for each targethost. The selection may also include determining what entities arecapable of making dynamic I/O configuration changes to facilitateexploration.

In the second stage 302, one or more exploration devices are dynamicallycreated and configured for use to deliver I/O commands and/or othermessages to various nodes and logical devices in the cluster. Theexploration device is created and associated with a selected networkpath (such as a channel 127) and an endpoint address. The explorationdevice(s) are dynamically configured on each target host or hostprocessor 102. In one embodiment, the exploration device is assigned anaddress based on the network's pre-existing naming protocol. Theexploration device may be generated or reconfigured for each channel 127or other communication path for each endpoint. This is performed foreach target host or system identified in stage 301.

An exploration device includes any O/S and/or hardware configurationthat is added to hardware or software and used to establish a connectionwith an endpoint via a selected channel 127 or other communication path,and which can represent an endpoint to the host computer system 102. Inone embodiment, the exploration device is any configuration added tosoftware, the O/S and/or hardware. The configuration can be dynamicallychanged to create an exploration device for each channel 127 as needed.

An example of a exploration device is a memory structure such as acontrol block. An example of a control block is a unit control block(UCB) configured in the host computer that can describe any singledevice or endpoint to the O/S. The UCB may include various datadescribing an endpoint, such as an address, an identifier (e.g., devicenumber) and one or more communication path identifiers (e.g., channelnumber). The UCB may be used by, for example, the O/S 124 to sendmessages to a selected endpoint.

In the third stage 303, a physical configuration of various endpointsconnected to the host processor 102 (or cluster) is determined. Thephysical configuration may include a configuration of point-to-pointdevices and/or fabric devices, such as physical controllers 115 and/orI/O devices 114 at each endpoint. For example, in point-to-pointconfigurations, one channel may be connected to one endpoint, and infabric connections, one channel may be connected to a switch or networkprocessor that is connected to a plurality of endpoints. In this stage,the host processor 102 receives physical configuration informationincluding identification of a location and at least one communicationpath or channel 127 associated with each physical endpoint.

In one embodiment, if the host processor 102 and the endpoints areconnected via a network or fabric, a first message is sent to eachnetwork processor 110 over each I/O channel 127 that is connected to thefabric to determine all of the destination ports or other physicalendpoints such as physical controllers 115 that are available througheach I/O channel 127. A message may be any type of signal or datatransfer for communication between two components. Examples of messagesinclude a data stream, frame, packet, signal, and one or more framesassociated with one or more selected operations. In one embodiment,sending the first message includes iteratively sending a message overeach channel 127 to the fabric. In one embodiment, sending each messageincludes connecting an exploration device (e.g., a UCB) assigned to achannel 127 and sending a message over the channel 127 to identify theI/O resources available to that channel as a destination port and/orphysical I/O device. Each message is sent using an existing protocol,such as Fibre Channel (FC) commands defined in the standard by theINCITS Fibre Channel (T11) Technical Committee. In one example, a singlesubchannel 128 may be used to reach all endpoints to a which a channel127 can establish a logical path to.

In one embodiment, for each channel 127 having an exploration deviceconnected thereto, a response message is received from the networkprocessor 110 at selected network endpoints. The response message mayinclude various physical configuration information that identifies thephysical endpoints and may also provide other characteristic and/ortopology information for the physical endpoints.

In one example, for each channel 127, host computer hardware and/orsoftware is updated or configured by adding a control block to the O/Shardware (e.g., via microcoding) and software. The control block isassigned an unused control unit number, device number and a channel pathidentifier based on a selected or pre-existing naming protocol. Thecontrol block is dynamically connected to the channel 127 and a fibrechannel (or other protocol) endpoint identification command or messageis sent to the channel 127 to identify physical entities at theassociated endpoint. An example of such a command is a Fibre ChannelGeneric Services (FC-GS) get port identifiers command (e.g., GID_FT),which may be sent as an information unit (IU) or frame via the channel127 to a name server or other network processor 110. In one embodiment,if a GID_FT message is sent but is not successful, other commands suchas a GA_NXT command (Get All Next) may be used. A command response maybe returned by the network processor 110 (e.g., name server), providingport identification information, which can be used to update theexploration device.

For example, the channel subsystem 112 acts as an FCP Initiator N_Portand issues a Fibre Channel Generic Services (FC-GS) GID_FT to thediscovery device, which then causes a command message (such as a channelcommand words (CCW)) to a name server (located for example in a switch110) to get a list of N_Port Identifiers.

The list of port identifiers is returned by the name server via aresponse message (e.g., Accept CT_IU). The host processor 102 can limitselection to just those ports of a certain type, e.g. FICON.

In one example, the first message is a Fibre Channel Link Services(FC-LS) Request Node Identification (RNID) command. A RNID command maybe used by the host processor 102 to request identification and/orconfiguration information from the control unit 116 or other logicaldevice or entity at an endpoint of a given channel 127. The RNID issent, in one example, by the OS 124. The host processor 102 may receivea response to the message, such as a RNID response, that provides therequested configuration information to the channel subsystem 112. TheRNID data received via the RNID response includes, for example, a worldwide unique physical identifier and includes information describing theendpoint (e.g., whether the endpoint is an I/O device such as a tape ordisk, a destination port or a channel). In this stage, bothswitch-attached and direct attached nodes 104 are identified andphysical configuration information is received.

In the fourth stage 304, the host processor 102 or channel subsystem 112determines what (if any) logical entities, including logical controlunits 116, are connected to the selected channel 127. In one embodiment,this stage is performed to identify logical control units 116 or otherlogical entities such as logical devices 119 associated with each pathand with the physical entities discovered in stage 303. In oneembodiment, the host processor 102 or channel subsystem 112 may performthis stage for each channel 127, physical device and/or endpointdiscovered in stage 303, or may only perform this stage for selectedchannels or devices. For example, the physical device and/or destinationport information received in stage 303 may be outputted to a user toallow the user to select devices and/or channels for discovery oflogical devices. Although this stage is described as performed todiscover logical entities, it may also be performed to discover physicalentities including hardware such as physical devices and/or controlunits.

One or more second messages are sent to each I/O channel 127, requestingidentification of a logical device entity at the endpoint. In oneembodiment, sending the second message includes iteratively sending amessage to each channel 127 to reach all endpoints reachable from eachchannel 127. In one embodiment, using the exploration device (e.g., UCB)assigned to the channel 127, a device identification message is sent tothe channel 127 to identify the connected logical device (e.g., logicalcontrol units 116 and logical devices 119 and request configurationinformation. Each message is sent using an existing protocol, such asFibre Channel FC protocol. The logical device identification message issent for each channel 127, including channels connected to a fabric andany channels 127 with direct attached nodes 104.

In one embodiment, the connected device is a logical control unit 116associated with a physical controller 115, and the message requestslogical configuration information to be sent from the logicalcontroller, such as the type of device, device capacity, device status,a world wide unique device identifier and address information. Anexample of logical device identification messages is the ReadConfiguration Data (RCD) command, described in “ESA/390 CommonI/O-Device Commands and Self Description”, publication numberSA22-7204-02, which is hereby incorporated herein by reference in itsentirety. Logical device identification messages may include any deviceand/or protocol specific query commands (such as sense identification(sense ID) commands) for logical configuration information about logicalcontrol units and associated logical devices. In one embodiment, thelogical identification messages include Fibre Channel (FC) commands thatare issued to the exploration device, and I/O messages such as channelcommand words (CCWs) are issued to the endpoints. Examples of FCcommands include FC-SB-4 (Fibre Channel—Single-Byte Command CodeSets—4), FC-GS (FC Generic Services) and FC-LS (FC Link services)commands.

An example of the second message is a Test Initialization Capability(TINC) command, which is a FC-SB-4 Link Control command. The TINCcommand may be used to gather information such as a control unit numberidentifying a logical control unit 116. For example, the TINC commandmay be used to receive a list of logical image information (logicalcontrol units) 116 in the node 104 associated with the endpoint. TheTINC command is further described, for example, in U.S. application Ser.No. 12/821,250, filed on Jun. 23, 2010, which is hereby incorporated byreference in its entirety.

In one embodiment, the TINC command is used in combination withadditional query commands to gather logical control unit information.For example, the TINC command is used to gather control unit numbers. Ifthe TINC command is successful, additional device-specific querycommands can be used to gather additional logical characteristics of theI/O device 114.

For example, the TINC includes an indication of the LPAR or hostprocessor 102 requesting the logical image information. A TINC responsemay include identification of logical image information indicating eachlogical control unit 116 associated with the channel 127, such as avector having a width equal to the number of possible logical controlunits 116 that may be formed in the physical device receiving therequest. In one embodiment, the first vector has a width of 256 bits.The first vector represents the logical control units 116 at theendpoint that the LPAR has access to and that have been configured andaddressable. The vector includes a bit for each logical control unit116, which is filled with a one or zero depending on whether the logicalcontrol unit 116 corresponding to that bit is configured and addressableby the requesting image (e.g. LPAR). In some cases, not every logicalcontrol unit 116 is accessible by every requesting image. Stages 302-304are repeated for each channel 127 or other communication path in thenetwork or cluster and for each endpoint available to each channel 127,and an exploration device may be dynamically created for each channel127. After all of the endpoints have been explored, the explorationdevice may then be disconnected from the channels 127.

The message protocols are not limited to those described herein, and mayinclude any protocols sufficient to allow for interrogation of nodesand/or physical and logical devices in a network. Examples of messageprotocols include various Fibre Channel protocols such as FICON (FibreConnectivity) protocols, as well as protocols supporting channel commandwords (CCW) channel programs and protocols supporting transport controlword (TCW) channel programs, as described, for example, in U.S. PatentPublication No. US 2009/0210581 A1 entitled “Bi-directional DataTransfer Within a Single I/O Operation,” which is hereby incorporatedherein by reference in its entirety.

In the fifth stage 305, the physical and logical configurationinformation is stored as a data collection or list accessible by thehost computer 102, which includes configuration information as well aschannel path information for each physical device and/or logical device.In one embodiment, the physical configuration information is included ina list of all physical controllers 114, and may be consolidated into amaster table for all nodes 104 for the systems or processors 102 in thecluster that participated in the method 300.

In one embodiment, the control unit 116 and device 114 configurationinformation is hardened such that the hardware components (e.g.,processors, channel subsystems) know about them (e.g., through thecreation of input/output configuration data set (IOCDS) definitions) andthe software components (e.g., operating systems) know about them (e.g.,via input/output configuration programs (IOCPs) for hardware,input/output definition files (IODFs) for software, and/or UCBcreation).

In one embodiment, the data collection includes first a list, table orother collection for each endpoint and physical device (such as physicalcontrol units 115 and I/O devices 114). In addition, the data collectionincludes a second list, table or other collection of all logical controlunits 116 and logical device images 119 associated with the logicalcontrol units, as well as each path (e.g., channel 127) to the logicalcontrol units 116 and devices 119. In this way, multiple paths to eachcontrol unit and/or device image may be configured and available foruse.

For example, the data collection includes a first master table of allnodes 104 discovered, including a representation of all establishablepaths that can reach each node 104 from each host 102. The datacollection also includes a second master table of all host processors102 and their associated channels 127, including a list of eachreachable endpoint.

In the sixth stage 306, the data collection, such as list of discoveredlogical control units 116 and devices 114, is compared against apre-existing collection or list of previously configured control units116 and devices 114 for the cluster of nodes. The pre-existing list maybe a data collection produced from a prior method similar to method 300or compiled by any other process. For example, for a z/OS, thepre-existing list may include a description of those devices and controlunits described in the IODF. In this way, all new (not previouslyconfigured) logical and physical entities may be identified, and mayalso be used to update the pre-existing list if desired.

FIG. 4 illustrates a method 400 of discovering logical control units andlogical devices in a network and/or generating a network device entityconfiguration. The method 400 includes one or more stages 401-406.Although the method 400 is described in conjunction with the hostcomputer system 102 and the channel subsystem 112, the method 400 can beutilized in conjunction with any processing and/or storage devicescapable of I/O operations with remote devices, as well as with anynetwork device or system.

This method 400 is provided to determine if new logical control units orother devices exist, or if new devices on previously configured controlunits exist. For new control units and/or devices, this method mayperform automatic device and control unit numbering and path selection.

In the first stage 401, a number of host processors 102, clusters and/orother entities are selected to be used for controller discovery, andpaths such as channels 127 are selected to reach each selected node 104.For example, one or more host processors 102, LPARs, clusters, networksegments or other target hosts are selected to be used for exploration.This stage is performed similarly to stage 301.

In the second stage 402, messages are sent from the target hosts to eachpotential logical control unit on the destination hardware, and/orexploration devices are dynamically configured on at least one targethost and connected (and subsequently disconnected), to receive physicalconfiguration information. Existing devices can be used to send messagesif they exist, or if none exist for a selected node or endpoint, anexploration device can be configured. In one embodiment, explorationdevices are configured on one of the target hosts selected in 401,selecting one complete path (e.g., channel 127 and endpoint) discoveredin the method 300 to reach the node 104. This process is repeated foreach possible logical control unit.

In the third stage 403, I/O commands such as CCW commands or othermessages are sent to each channel 127 using the target hosts to gatherconfiguration information regarding each logical device, and theconfiguration information is consolidated and compared to a list ofpreviously configured devices in the network or cluster, revealing alist of new control units and new devices that were not previouslyconfigured or connected to the network. This stage is performedsimilarly to stages 304-306 of the method 300.

In the fourth stage 404, a representation of the discovered devices foreach logical control unit is created in, for example, a control blockthat represents every new logical CU and device image. Stages 402through 404 are repeated for each logical control unit to be explored oneach node 104.

In the fifth stage 405, appropriate paths are selected for the set ofnew logical control units that have been discovered. In one embodiment,channels 127 or other communication paths are selected from the list ofpossible paths (discovered in stages 403-404 and stored in the datacollection in stage 305) that could be used to reach a new control unit116. In one embodiment, the host system 102 or channel subsystem 112 isconfigured to utilize the configuration information to identify multipleseparate communication paths between any given host computer and deviceentity, so that if one path to a device or control unit is lost, anotherpath can be selected to effect communication. When an I/O operation isto be performed for a selected device 114, the computer system 102and/or channel subsystem 112 may determine the best channel 127 or othercommunication path to use for executing the operation. During pathselection, analysis is performed so that the set of paths chosen areselected to provide high availability. As a part of this analysis,consideration is given to ensure that, if possible, not all paths sharethe same switches or other network devices. This stage is performed foreach target device 114 or control unit 116 in the cluster. In oneembodiment, path selection may be automatically performed based onselected or pre-configured considerations for availability. In oneembodiment, the path selection is performed for each host processor 102,and paths (e.g., static and/or dynamic or managed paths) are created foreach host processor 102 so that the newly discovered logical controlunits and devices are accessible to each host processor 102. In oneembodiment, the host processors 102 are part of a cluster that ismanaged by a Dynamic Channel Path Management (DCM) system that includesboth static channels, and managed channels that can be re-assignedbetween selected I/O clusters. In this embodiment, identification dataincludes a Channel Path ID (CHPID) for each logical control unit.

In the sixth stage 406, identification data is generated for eachlogical control unit and device discovered. For example, addresses arecreated, such as device and control unit numbers, for devices andcontrol units that have been discovered. The numbers may be selectedbased on a pre-existing configuration naming system.

In one embodiment, for DCM systems, stage 406 includes creating or usinga policy that establishes a desired level of connectivity between hostprocessors 102 and logical control units level of connectivity (i.e.,the number of CHPIDS, static and managed). A number of static and/ormanaged channels to each logical control unit may be selected via theDCM system to create the level of connectivity desired. An example of aDCM system is described in U.S. Pat. No. 6,598,069, issued Jul. 22,2003, which is hereby incorporated herein by reference in its entirety.

The systems and methods described herein provide numerous advantagesover prior art dataflow systems. Technical effects and benefits includeallowing for dynamic and automated discovery of physical and logicaldevices, such as control units, in a network or cluster. Using theexploration methods described herein allows for dynamic discovery ofhardware in a clustered environment. Once discovery is complete, aconsistent configuration can be used by the cluster, and can be utilizedto automatically create and update network configurations and optimizesystem operation. The systems and methods allows for paths not currentlyused to be adopted, where prior approaches required manual effort andhuman knowledge to add new paths to control units. Other advantagesinclude ensuring that communication paths chosen for various I/Ooperations are to the correct control units, and allowing paths to bechosen with availability considerations and minimal human interaction.In addition, each node in the network or cluster may use this automaticpath selection, minimizing the manual effort in selecting communicationpaths to I/O devices.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

1. A computer program product for processing communications between ahost processor and a plurality of devices connected to the hostprocessor by an input/output processing system, comprising a tangiblestorage medium readable by a processing circuit and storing instructionsfor execution by the processing circuit for performing a methodcomprising: receiving, by the host processor, physical configurationinformation including identification of a location of each physicalendpoint connected to the host processor and a plurality ofcommunication paths associated with each physical endpoint; sending atleast one message to each physical endpoint on each of the plurality ofcommunication paths in response to receiving the physical configurationinformation, the at least one message requesting identification of alogical entity at the endpoint, and receiving logical configurationinformation identifying the logical entity; and generating a datacollection accessible by the host processor, the data collectionincluding the physical configuration information and the logicalconfiguration information for each logical entity, and identification ofthe plurality of communication paths to each logical entity.
 2. Thecomputer program product of claim 1, wherein the host processor isconnected to the plurality of devices via a plurality of channels, andthe at least one message is a Fibre Channel protocol message.
 3. Thecomputer program product of claim 2, wherein the at least one messageincludes at least one of a Test Initialization Capability (TINC) commandconfigured to request an identification of each subchannel associatedwith a logical controller at the endpoint, and a message configured torequest logical configuration information for each subchannel.
 4. Thecomputer program product of claim 1, wherein the host processor and theplurality of devices are connected via a network, and receiving physicalconfiguration information includes sending a request message from thehost processor to a network processor requesting a configuration of aplurality of physical endpoints in the network, and receiving thephysical configuration information from the network processor inresponse to the request message.
 5. The computer program product ofclaim 4, wherein the request message includes one of a Request NodeIdentification (RNID) message, a GID_FT (get port identifiers) messageand a GA_NXT (get all next) command, and the at least one messageincludes a Test Initialization Capability (TINC) command configured torequest an identification of each subchannel associated with a logicalcontroller at the endpoint.
 6. The computer program product of claim 5,wherein the at least one message includes at least one device-specificinput/output (I/O) command, the I/O command configured to requestcharacteristics of one or more devices associated with the logicalcontroller.
 7. The computer program product of claim 6, wherein thedevice-specific I/O command is selected from at least one of a senseidentification command and a Read Configuration Data (RCD) command. 8.The computer program product of claim 1, further comprising selectingone or more paths of the plurality of communication paths based on pathavailability for executing an input/output (I/O) operation.
 9. Thecomputer program product of claim 8, wherein the at least one hostprocessor is a Dynamic Channel Path Management (DCM) cluster, andselecting one or more paths includes creating a host policy fordetermining a number of static paths for availability and a number ofmanaged paths for performance to be associated with each logical entity.10. The computer program product of claim 1, wherein the method furthercomprises comparing the data collection to pre-existing configurationdata including a configuration of entities in the network, identifyingnew entities, and updating the pre-existing configuration data.
 11. Thecomputer program product of claim 10, wherein updating the pre-existingconfiguration data includes selecting device numbers and control unitnumbers based on availability of the numbers in the existingconfiguration, and selecting the device numbers and control unit numbersbased on a type of I/O device.
 12. The computer program product of claim1, wherein the method further comprises generating an exploration deviceby configuring at least one of hardware and software in the hostcomputer, the exploration device configured to be used to send the atleast one message.
 13. A method of processing communications between ahost computer and a plurality of devices connected to the host computerby an input/output processing system, the method comprising: receiving,by the host processor, physical configuration information includingidentification of a location of each physical endpoint connected to thehost processor and a plurality of communication paths associated witheach physical endpoint; sending at least one message to each physicalendpoint on each of the plurality of communication paths in response toreceiving the physical configuration information, the at least onemessage requesting identification of a logical image at the endpoint,and receiving logical image configuration information identifying thelogical entity; and generating a data collection accessible by the hostprocessor, the data collection including the physical configurationinformation and the logical configuration information for each logicalentity, and identification of the plurality of communication paths toeach logical entity.
 14. The method of claim 13, wherein the hostprocessor is connected to the plurality of devices via a plurality ofchannels, and the at least one message is a Fibre Channel protocolmessage.
 15. The method of claim 14, wherein the at least one messageincludes a Test Initialization Capability (TINC) command configured torequest an identification of each subchannel associated with a logicalcontroller at the endpoint.
 16. The method of claim 15, wherein the atleast one message includes at least one device-specific input/output(I/O) command configured to request characteristics of a deviceassociated with each subchannel.
 17. The method of claim 13, wherein thehost processor and the plurality of devices are connected via a network,and receiving physical configuration information includes sending arequest message from the host processor to a network processorrequesting a configuration of a plurality of physical endpoints in thenetwork, and receiving the physical configuration information from thenetwork processor in response to the request message.
 18. The method ofclaim 17, wherein the request message includes one of a Request NodeIdentification (RNID) message, a GID_FT (get port identifiers) messageand a GA_NXT (get all next) command, and the at least one messageincludes a Test Initialization Capability (TINC) command configured torequest an identification of each subchannel associated with a logicalcontroller at the endpoint.
 19. The method of claim 13, furthercomprising selecting one or more paths of the plurality of communicationpaths based on path availability for executing an input/output (I/O)operation.
 20. The method of claim 19, wherein the at least one hostprocessor is a Dynamic Channel Path Management (DCM) cluster, andselecting one or more paths includes creating a host policy fordetermining a number of static paths for availability and a number ofmanaged paths for performance to be associated with each logical entity.21. The method of claim 13, further comprising comparing the datacollection to pre-existing configuration data including a configurationof entities in the network, identifying new entities, and updating thepre-existing configuration data.
 22. The method of claim 13, furthercomprising generating an exploration device by configuring at least oneof hardware and software in the host computer, the exploration deviceconfigured to be used to send the first and the second message.
 23. Acomputer program product for processing communications between a hostprocessor and a plurality of devices connected to the host processor bya network, comprising a non-transitory storage medium readable by aprocessing circuit and storing instructions for execution by theprocessing circuit for performing a method comprising: generating anexploration device by configuring at least one of hardware and softwarein the host processor, the exploration device configured to be used tocommunicate with one of a plurality of physical endpoints in thenetwork; responsive to a connection between the host processor and theplurality of devices being a network connection, sending a first FibreChannel message from a channel subsystem in the host computer to anetwork processor requesting a configuration of the plurality ofphysical endpoints; receiving physical configuration information fromthe network processor in response to the first message, the physicalconfiguration information including identification of a location and aplurality of channel paths associated with each I/O device; sending asecond Fibre Channel message to one or more I/O devices on each of theplurality of channel paths in response to receiving the physicalconfiguration information, the second Fibre Channel message requestingidentification of a logical image connected to the plurality of channelpaths, and receiving logical information identifying the logical image;and generating a data collection accessible by the host computer, thedata collection including the physical configuration information and thelogical information for each channel path, and identification of theplurality of channel paths to each logical control unit.
 24. Thecomputer program product of claim 23, wherein the method furthercomprises selecting one or more paths of the multiple paths based onpath availability for executing an input/output (I/O) operation.
 25. Thecomputer program product claim 23, wherein the method further comprisescomparing the data collection to pre-existing configuration dataincluding a configuration of entities in the network, identifying newentities, and updating the pre-existing configuration data.